package com.htl.exampro.course.api;

import com.htl.exampro.base.model.PageResult;
import com.htl.exampro.base.model.ServerResponse;
import com.htl.exampro.course.pojo.query.CoursePageParam;
import com.htl.exampro.course.pojo.vo.ChapterVO;
import com.htl.exampro.course.pojo.vo.CourseVO;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * 课程管理接口
 */
public interface CourseApi {
    /**
     * 获取课程列表
     */
    @PostMapping("/page")
    ServerResponse<PageResult<CourseVO>> getCoursePage(@RequestBody CoursePageParam pageParam);

    /**
     * 添加课程
     */
    @PostMapping("/course")
    ServerResponse<Void> addCourse(@RequestBody CourseVO course);

    /**
     * 获取课程详情
     */
    @GetMapping("/course/{id}")
    ServerResponse<CourseVO> getCourseDetail(@PathVariable Long id);

    /**
     * 更新课程
     */
    @PutMapping("/course")
    ServerResponse<Void> updateCourse( @RequestBody CourseVO course);

    /**
     * 删除课程
     */
    @DeleteMapping("/course/{id}")
    ServerResponse<Void> deleteCourse(@PathVariable Long id);

    /**
     * 获取课程章节列表
     */
    @GetMapping("/course/{courseId}/chapters")
    ServerResponse<List<ChapterVO>> getCourseChapters(@PathVariable Long courseId);

    /**
     * 添加课程章节
     */
    @PostMapping("/course/chapter")
    ServerResponse<Void> addCourseChapter(@RequestBody ChapterVO chapter);

    /**
     * 更新课程章节
     */
    @PutMapping("/course/chapter")
    ServerResponse<Void> updateCourseChapter(@RequestBody ChapterVO chapter);

    /**
     * 删除课程章节
     */
    @DeleteMapping("/course/chapter/{id}")
    ServerResponse<Void> deleteCourseChapter(@PathVariable Long id);
} 